<!-- 需要sku_arr,sku_list 2个参数 -->
<div class="sku_table" id="sku_table">
    <input type="hidden" class="js_sku_id" name="psku_id" value="" />
    <input type="hidden" class="js_sku_desc" name="sku_desc" value="" />

    <volist name="sku_arr" id="vo">
        <div class="sku_info am-fl am-margin-bottom-xs">
            <span class="property-type loc  am-fl">{$vo['sku_name']}</span>
            <div class="property-cont   am-text-left am-fl">
                <volist name="vo['sku_value_list']" id="sku_value">
                    <a href="javascript:void(0);"  class="sku_value sku_value_{$sku_value.id}" ><span data-value="{$vo.id}:{$sku_value.id}">{$sku_value['name']}</span></a>
                </volist>
            </div>
        </div>
    </volist>

</div>


<script type="text/javascript">

    //检测2个sku字符串是否相等
    //规则1. 包含的规格一样
    //规则2. 第2个为标准，第1个为要比较的样本，判断第一个是否与第二个类似
    function checkEqualSkuStr(skuStr1,skuStr2){

        var sku_arr1 = skuStr1.split(";");
        var sku_arr2 = skuStr2.split(";");
        if(sku_arr1.length != sku_arr2.length){
            return false;
        }
//        console.log(sku_arr1,sku_arr2);


        for(sku2 in sku_arr2){
            var flag = false;
            for(sku1 in sku_arr1){

                if(sku_arr1[sku1] == sku_arr2[sku2]){

                    flag = true;
                    break;
                }
            }

            if(!flag){
                return false;
            }

        }

        return true;
    }

    //从商品Sku列表中找到 符合要求的商品
    function getFromSkuList(strSkuID){
        var sku_list = $.parseJSON('[sku_list]');
        for(key in sku_list){
            if(checkEqualSkuStr(strSkuID,key)){
                return sku_list[key];
            }
        }
        return false;
    }

    function processSku($ele){
        var sku_arr = $.parseJSON('[sku_arr]');
        //sku种类数目
        var maxSkuCnt = {:count($sku_arr)};
        var $sku_table = $ele.closest(".sku_table");
        var $selected = $sku_table.find(".sku_value.selected");


        $(".sku_value",$sku_table).removeClass("out_of_stock");

        if($selected.length >= maxSkuCnt - 1){
            //如果选中的数目满足此条件，则开始处理
            //1. 移除库存为0的商品，设为不可选
            var sku_value_id = false;
            var strSelectedValues = "";
            var sku_id_arr = [];
            for(var i=0;i<$selected.length;i++){
                sku_value_id = $("span",$selected[i]).data("value");
                var sku_id = sku_value_id.split(":")[0];
                sku_id_arr[sku_id]=1;
                strSelectedValues = strSelectedValues+sku_value_id+";";
            }

            if($selected.length == maxSkuCnt){
                //TODO: 相等时，返回商品
                product_sku = getFromSkuList(strSelectedValues);
                //
                if(product_sku == false || product_sku['quantity'] ==  0){

                    return false;
                }else{
                    return product_sku;
                }
            }


            var notSelectSku = false;

            for(key in sku_arr){
                var sku = sku_arr[key];
//                console.log(sku);
                if(sku_id_arr[sku['id']] != 1){
                    notSelectSku = sku;
                    break;
                }
            }

//            console.log(sku_id_arr,notSelectSku,strSelectedValues);
            //2. 组合成一个完整的Sku 字符串
            if(notSelectSku){
                var product_sku = false;
                sku_value_id = false;
                for(key in notSelectSku['sku_value_list']){

                    sku_value_id = notSelectSku['sku_value_list'][key]['id'];

                    var strSku = strSelectedValues+notSelectSku['id']+":"+sku_value_id+';';
//                    console.log(strSku);

                    product_sku = getFromSkuList(strSku);
//                    console.log(product_sku,product_sku['quantity']);
                    if(product_sku == false || product_sku['quantity'] ==  0){
//                        console.log(sku_value_id,product_sku);
                        $(".sku_value_"+sku_value_id,$sku_table).addClass("out_of_stock");
                    }
                }

            }



        }

         return false;
    }

    function setProductSkuInfo(product_sku){
        console.log("找到商品信息",product_sku);
        var $quantity = $(".product .js_quantity");
        var $salePrice = $(".product .js_sale_price");
        var $icon_url = $(".product .js_img_origin img");
        var $sku_desc = $(".product .js_sku_desc");
        $icon_url.each(function(index,item){
            $(item).attr("src",product_sku.icon_url);
        })
        $quantity.text(product_sku.quantity);
        $salePrice.text(product_sku.price);
        $("#sku_table .js_sku_id").val(product_sku.id);
        var sku_desc = "";
        $("#sku_table .selected.sku_value span").each(function(index,item){
            var sku_name = $(item).closest(".sku_info").find('.property-type').text();
//            console.log(sku_name);
            sku_desc = sku_desc+sku_name+":"+$(item).text()+";";
        });
        $sku_desc.val(sku_desc);
    }

    $(function(){
        //测试,以下应该相等
//        console.log(checkEqualSkuStr("1:2;2:3;","2:3;1:2;"));
        //测试,以下应该不相等
//        console.log(checkEqualSkuStr("1:2;2:3;","3:3;1:2;")) ;
        //测试,以下应该不相等
//        console.log(checkEqualSkuStr("1:2;2:3;3:4;4:5;","4:5;2:3;1:2;")) ;
        //测试,以下应该相等
//        console.log(checkEqualSkuStr("1:2;2:3;3:4;4:5;","3:4;4:5;2:3;1:2;"));


        $(".sku_table .sku_value").click(function(ev){
//            console.log($(this));
            var $ele = $(this);
            if($ele.hasClass("out_of_stock")){

                return ;
            }

            if($ele.hasClass("selected")){
                $ele.removeClass("selected");
                $(".sku_value","#sku_table").removeClass("out_of_stock");
                return ;
            }

            $(".sku_value.selected",$ele.parent()).removeClass("selected");
            $ele.addClass("selected");

            var $sku_info = $ele.parent().parent();

            $sku_info.addClass("selected");

            var product_sku = processSku($ele);

            if(product_sku != false){
                setProductSkuInfo(product_sku);
            }

        })



    });


</script>